/**
 * 
 */
package br.flf.webchat.entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Nathan
 * 
 */
public class DialogoTO implements Serializable {
	// -------------------------------------------Constantes
	/**
	 * 
	 */
	private static final long serialVersionUID = 6364554686679756458L;
	// --------------------------------------------Atributos
	private Cliente cliente;
	private Funcionario funcionario;

	private List<Mensagem> listaDeMensagens = new ArrayList<Mensagem>();

	// -------------------------------------Metodos Publicos
	// -------------------------------------Metodos Privados
	// ----------------------------------------Gets and Sets
	/**
	 * @return the cliente
	 */
	public Cliente getCliente() {
		return cliente;
	}

	/**
	 * @param cliente
	 *            the cliente to set
	 */
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
		cliente.setDialogoTO(this);
	}

	/**
	 * @return the funcionario
	 */
	public Funcionario getFuncionario() {
		return funcionario;
	}

	/**
	 * @param funcionario
	 *            the funcionario to set
	 */
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
		funcionario.setDialogoTO(this);
	}

	/**
	 * @return the listaDeMensagens
	 */
	public List<Mensagem> getListaDeMensagens() {
		synchronized (listaDeMensagens) {
			if (listaDeMensagens == null) {
				listaDeMensagens = new ArrayList<Mensagem>();
			}

			return listaDeMensagens;
		}

	}

	public synchronized void adicionarMensagem(Mensagem msg) {
		synchronized (listaDeMensagens) {
			listaDeMensagens.add(msg);
		}

	}

	public String getDialogo4InputTextArea() {
		synchronized (getListaDeMensagens()) {
			StringBuilder builder = new StringBuilder();
			for (Mensagem msg : listaDeMensagens) {
				builder.append(msg.toString());
			}
			return builder.toString();
		}

	}
}
